//
//  UIColor+TYColor.h
//  LIveDemo
//
//  Created by Thank_Hyu on 2019/3/26.
//  Copyright © 2019 cchuanfeng. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, UIColorGradientDirection) {
    ///水平方向
    UIColorGradientDirectionHorizontal = 1,
    ///垂直方向
    UIColorGradientDirectionVertical = 2,
    ///对角线方向（左上-右下）
    UIColorGradientDirectionlLeftUpToRightDown = 0,
    ///对角线方向（左下-右上）
    UIColorGradientDirectionlLeftDownToRightUp = 3,
};

typedef struct {
    CGFloat red;
    CGFloat green;
    CGFloat blue;
    CGFloat alpha;
} RGBA;

CG_INLINE RGBA
RGBAColorMake(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha)
{
    RGBA grba;
    grba.red = red; grba.green = green;
    grba.blue = blue; grba.alpha = alpha;
    return grba;
}

@interface UIColor (TYColor)
/**
 *  获取渐变色
 *
 *  @param colors               渐变颜色列表
 *  @param imgSize              渐变尺寸，一般用显示view的大小
 *  渐变方向，默认UIColorGradientDirectionlLeftUpToRightDown对角线方向（左上-右下）
 */
+ (UIColor *)gradientColorFromColors:(NSArray *)colors
                             imgSize:(CGSize)imgSize;

/**
 *  获取渐变色
 *
 *  @param colors               渐变颜色列表
 *  @param imgSize              渐变尺寸，一般用显示view的大小
 *  @param gradientDirection    渐变方向，默认UIColorGradientDirectionlLeftUpToRightDown对角线方向（左上-右下）
 */
+ (UIColor *)gradientColorFromColors:(NSArray *)colors
                              imgSize:(CGSize)imgSize
                              gradientDirection:(UIColorGradientDirection)gradientDirection;

/**
 *  获取颜色rgba值
 */
- (RGBA)getRGB;

/**
 *  根据rgba获取颜色
 *
 *  @param rgba              颜色rgba值 
 */
+ (UIColor *)colorWithRGBA:(RGBA)rgba;

/**
 *  根据16进制码获取颜色
 *
 *  @param hex               16进制码(如：0Xe5e589)
 */
+ (UIColor *)colorWithHex:(long)hex;

/**
 *  根据16进制码获取颜色
 *
 *  @param hex               16进制码(如：0Xe5e589)
 *  @param alpha             透明度(0～1.0)
 */
+ (UIColor *)colorWithHex:(long)hex alpha:(float)alpha;
@end

NS_ASSUME_NONNULL_END
